Сайт Информационных Технологий

ИНТЕГРИРОВАННАЯ СРЕДА ДЛЯ РАЗРАБОТКИ НЕЧЕТКИХ АЛГОРИТМОВ Fuzzy IDE

А.А. Какунин, М.С. Куприянов

Санкт-Петербургский государственный электротехнический университет “ЛЭТИ”

Abstract — Fuzzy IDE - integrated environment for the development of fuzzy algorithms. Among properties distinguishing it from other systems it is necessary to note the following:

1. Средства разработки

Система Fuzzy IDE написана на языке TclTk. TclTk - это скриптовой язык, то есть он не требует этапа компиляции (исходный код интерпретируется интерпретатором). Для этого языка существуют реализации для таких операционных систем как Windows, Unix и MacOS. С помощью этого языка, благодаря использованию его библиотеки Tk можно достаточно эффективно создавать программы с развитым пользовательским интерфейсом. Причем эти программы будут переносимыми, то есть исполняться на разных платформах.

FuzzyIDE использует так же библиотеку BWidget, для написания интерфейсов и библиотеку TkTable для создания и редактирования таблиц, используемых в редакторе базы правил.

2. Библиотека FuzzyTCL

FuzzyIDE использует библиотеку FuzzyTCL, являющуюся реализацией операций нечеткой логики на языке TclTk. Данная библиотека обладает самыми широкими возможностями, среди которых следует отметить:

Поддержка различных видов функций принадлежности, от стандартных функций принадлежности до математических функций и функций, определенных пользователем.

Использование нечетких типов. Можно определить тип "Скорость", после чего для всех входов, на которые поступает скорость просто указать, что этот вход имеет тип "Скорость".

Использование раскладок типов. При создании своего собственного типа пользователь может использовать для автоматической генерации одну из заранее заданных раскладок, например при создании типа "Скорость", пользователь может просто сказать, что надо сгенерировать этот тип из раскладки "медленно-быстро" с использованием 7 лингвистических термов и система сама сгенерирует данный тип и все лингвистические термы для него с их именами и функциями принадлежности.

В системе можно задать несколько нечетких модулей, каждый из которых описывается своими входными и выходными переменными и своей базой нечетких правил.

На вход модуля может поступать как четкое значение, так и нечеткая величина в виде функции либо в виде лингвистического терма.

Для входа можно определить ошибку. Например, если данные на вход модуля поступают от какого-нибудь прибора, для которого известна его погрешность, мы можем учитывать эту погрешность при выводе.

TclTk позволяет подключать функции, написанные на языке C, и поэтому, при необходимости, всегда можно будет значительно увеличить скорость работы библиотеки, переписав некоторые ее части на языке C.

3. Архитектура и возможности системы

Система Fuzzy IDE реализована в виде MDI-приложения (одно главное окно и несколько подчиненных).

Главное окно (рис.1). Свою работу пользователь начинает с главного окна программы. (рис.1). На главном окне программы расположены меню, панель инструментов и дерево проекта. В дереве проекта отображена вся структура проекта и при помощи него пользователь может легко получить доступ к любому элементу системы при помощи всего лишь одного щелчка мыши. Из главного окна пользователь запускает все другие окна. При закрытии главного окна происходит выход из системы.

Система помощи (рис.2). В системе Fuzzy IDE используется система помощи, основанная на HTML. Вся информация храниться в HTML-файлах, а в систему встроен модуль, позволяющий просматривать эти файлы. В результате, из любого места системы можно вызвать контекстно-зависимое окно помощи (рис.2).

Редактор проектов (рис.3). Вся работа с системой идет в рамках проекта. Вы можете сохранить все свои установки и все содержимое базы знаний в файле проекта, что бы потом это можно было загрузить обратно и продолжить работу.

Проект можно отредактировать при помощи редактора проектов (рис. 3). В нем вы сможете задать имя проекта, комментарий к нему, различные параметры нечеткой базы знаний, такие как типы операций, точность, а так же параметры компиляции, где вы указываете для какого микрoконтроллера вы будете генерировать машинный код и параметры генерации.

Редактор шкалы. Пользователь может задать лингвистическую аппроксимацию шкалы раскладку для типов. При запуске система генерирует 4 стандартных варианта:

Рис. 1. Главное окно Fuzzy IDE под управлением ОС Linux/PC (Windows 98)

 

Рис. 2. Окно помощи в FuzzyIDE

• small-big, или маленький-большой;

• near-far, или близкий-далекий;

• slow-fast, или медленный-быстрый;

• light-heavy, или легкий-тяжелый;

Рис.3. Редактор проектов в Fuzzy IDE

Однако пользователь может создать свою собственную шкалу, либо отредактировать существующую при помощи редактора. В этом редакторе пользователь может задать имя шкалы, комментарий, лингвистические термы и какие термы когда надо использовать.

Редактор типов. После того, как пользователь задал все раскладки типов, он может приступать к определению самих типов. Новый тип создается при помощи диалога создания типов. При этом пользователь может задать, при помощи какой раскладки сгенерировать данный тип, либо целиком создать этот тип своими руками. Для изменения существующего типа служит редактор типов. В редакторе типов пользователь может изменить имя типа, его комментарий, его лингвистические термы и перегенерировать его с использованием одной из раскладок. В дальнейшем, созданные типы будут использоваться при определении входных и выходных переменных модуля.

Редактор переменных. Переменные бывают двух типов (входные либо выходные переменные). Для каждой переменной задается ранее созданный тип. Параметры уже существующей переменной можно изменить при помощи редактора переменных. В этом редакторе пользователь может изменить имя переменной, задать комментарий, либо изменить данные об ошибке. Данные на вход системы могут поступать с какой-либо погрешностью.

Погрешность может быть мультипликативная либо аддитивная. Для выполняемого проекта может задаваться функция погрешности (однако пользователь может и не задавать функцию самостоятельно, а сгенерировать ее, задав лишь вид функции и процент погрешности).

Редактор базы правил (рис.4). Редактор базы правил предназначен для задания нечетких правил системы. В системе используются правила продукционного вида, то есть правила "если … и … то …"

Рис. 4. Редактор базы правил в Fuzzy IDE

Правила представляются в Fuzzy IDE в табличном виде, где каждому столбцу соответствует переменная, а каждая строка -это отдельное правило. Пользователь может задать лингвистические термы для переменных лишь одним щелчком мыши. При необходимости, Fuzzy IDE проследит, что бы не было некорректных правил, удалит повторы в базе правил. В дальнейшем предполагается добавить возможность создания базы правил, используя методы грубых множеств.

Компилирование системы. После задания пользователем всех параметров создаваемой им нечеткой базы знаний, осуществляется генерация машинных кодов. Для этого достаточно лишь нажать кнопку "Compile" на главном окне системы. При этом будет сгенерирован ассемблерный код для заданного пользователем микроконтроллера. Вся информация о ходе компиляции будет выведена в окно статуса компиляции. Далее можно непосредственно проассемблировать полученную программу, либо включить ее в C-программу.


Site of Information Technologies
Designed by  inftech@webservis.ru.